/*!
 * \file GapStateRegistered.h
 * \brief State where connection between MGW and SGW is established - this
 * is the normal operational state
 */

#ifndef MGW_GAP_STATE_REGISTERED_H
#define MGW_GAP_STATE_REGISTERED_H

#include "GapStateBase.h"
#include "GapGenerator.h"

namespace tsc
{
namespace mgw
{

/**
 * Normal state of GapGenerator in MGW
 * Connection with SGW is established
 */
class GapStateRegistered : public GapStateBase
{
public:

	static GapStateRegistered* instance();

protected:

    virtual void
    handleEventGapEchoReq(
        GapGenerator* gapGen,
        GapEventEchoReq* event,
        EventData*& eventData);

    virtual void
    handleEventGapMediaBearerSetupReq(
        GapGenerator* gapGen,
        GapEventMediaBearerSetupReq* event,
        EventData*& eventData);

    virtual void
    handleEventGapMediaBearerRelease(
        GapGenerator* gapGen,
        GapEventMediaBearerRelease* event,
        EventData*& eventData);

	virtual ~GapStateRegistered();

private:
	GapStateRegistered();

};

} // namespace mgw
} // namespace tsc

#endif // MGW_GAP_STATE_REGISTERED_H
